/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package mx.edu.itesm.daai.tour;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

/**
 *
 * @author Shadow-Xtar
 */
public class FindMe extends HttpServlet {
   
    private static LastLocationBean lastLocation= new LastLocationBean();
    // Initiates 
	 // lastMessage and lastLocation
	 public void init(ServletConfig config) throws ServletException {
		    super.init(config);
		    lastLocation.setCoords("No contact with a client yet");
		    lastLocation.setIpAddress("");
	 }
         
    /** 
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            
            String coords = request.getParameter("BBOX");
    	if (coords==null){
    		return;
    	}
    	
    	//Google Earth Mime type
    	response.setContentType("application/keyhole"); 
        String[] coParts= coords.split(",");
        double userlon;
        double userlat;
        
        // Centering methodology copied from KLM tutorial
        try{
        userlon = ((Double.parseDouble(coParts[2]) - Double.parseDouble(coParts[0]))/2) + Double.parseDouble(coParts[0]);
        userlat = ((Double.parseDouble(coParts[3]) - Double.parseDouble(coParts[1]))/2) + Double.parseDouble(coParts[1]);
        }catch(NumberFormatException e){
        	return;
        }
        
        String ipAddress = request.getRemoteAddr();
    	
    	// Lets keep our single instances in a valid state
    	synchronized(this) {
    		lastLocation.setCoords(coords);
    		lastLocation.setIpAddress(ipAddress);
                lastLocation.setLatitud(userlat);
                lastLocation.setLongitud(userlon);
    	}
            /* TODO output your page here
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet FindMe</title>");  
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet FindMe at " + request.getContextPath () + "</h1>");
            out.println("</body>");
            out.println("</html>");
            */
        
        String klmString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
        + "<kml xmlns=\"http://earth.google.com/kml/2.0\">\n"
        /*+ "<Placemark>\n"
        + "<name> Posicion </name>\n"
        +"<description>Coordenadas</description>\n"
        + "<Point>\n"
        + "<coordinates>"+userlon+","+userlat+",0</coordinates>\n"
        + "</Point>\n"
        + "</Placemark>\n"
         */
        + "</kml>\n";  
        
        out.println(klmString);
        } finally { 
            out.close();
        }
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
    * Handles the HTTP <code>GET</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
    * Handles the HTTP <code>POST</code> method.
    * @param request servlet request
    * @param response servlet response
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

            String message;
            PrintWriter out;
            response.setContentType("text/html");
            out = response.getWriter();
            
            double latitud;
            double longitud;
            
            synchronized(this) {
                latitud = lastLocation.getLatitud();
                longitud = lastLocation.getLongitud();
            }
            
            message="<html><head><title> Encuentrame en Google Earth </title>"+
                "<link rel='stylesheet' type='text/css' href='"+request.getContextPath()+"/css/styles.css' />" +
                "</head><body>" +
                "<div id='menu'><ul>" +
                "<li>Encuentrame</li>" +
                "</ul></div>" +
                "Latitud: "+latitud+
                "<br />Longitud: "+longitud +
                "<br /><br />Estas viendo: <h2>";
                //Dentro del TEC
                if((latitud>=19.2822650623634 && latitud <= 19.2853903293463) &&
                        (longitud>=-99.13873093924639 && longitud <= -99.13440669893434)){
                    //Aulas I
                    if((latitud>=19.28485278401102 && latitud <= 19.28519790023868) &&
                        (longitud>=-99.1361465374456 && longitud <= -99.1355213263073)){
                            message+=  "Aulas I";

                    //Aulas II    
                    }else if((latitud>=19.28466144999623 && latitud <= 19.28500755420183) &&
                        (longitud>=-99.13695352453136 && longitud <= -99.13649150684313)){
                            message+=  "Aulas II";

                    //Aulas III    
                    }else if((latitud>=19.28379851875062 && latitud <= 19.28416970190454)&&
                        (longitud>=-99.13735335402562 && longitud <= -99.13672320130043)){
                            message+=  "Aulas III";

                    //Aulas IV 
                    }else if((latitud>=19.28497935906059 && latitud <= 19.2851212198935) &&
                        (longitud>=-99.1354772322498 && longitud <= -99.134930405714)){
                            message+=  "Aulas IV";

                    //Oficinas I
                    }else if((latitud>=19.28468740734878 && latitud <= 19.28489818338596)&&
                        (longitud>=-99.13554777356885 && longitud <= -99.13523526432729)){
                            message+=  "Oficinas I";

                    //Oficinas II    
                    }else if((latitud>=19.2848115013913 && latitud <= 19.28500986274798) &&
                        (longitud>=-99.13646051141089 && longitud <= -99.13616336264553)){
                            message+=  "Oficinas II";

                    //Oficinas III    
                    }else if((latitud>=19.28426254848353 && latitud <= 19.28453809073876) &&
                        (longitud>=-99.13684041203423 && longitud <= -99.13659970601647)){
                            message+=  "Oficinas III"; 

                    //Oficinas IV 
                    }else if((latitud>=19.28520331977066 && latitud <= 19.28558592465762) &&
                        (longitud>=-99.13676393668355 && longitud <= -99.13633485250639)){
                            message+=  "Oficinas IV";

                    //Oficinas V 
                    }else if((latitud>=19.28283159523996 && latitud <= 19.2831402269269)&&
                        (longitud>=-99.13647130803446 && longitud <= -99.13609407093028)){
                            message+=  "Oficinas V";

                    //Meson 
                    }else if((latitud>=19.28428657773038 && latitud <= 19.28455118138946)&&
                        (longitud>=-99.13713555949694 && longitud <= -99.13686774047754)){
                            message+=  "El Meson"; 

                    //Centro estudiantil
                    }else if((latitud>=19.28399130032175 && latitud <= 19.28454674162214) &&
                        (longitud>=-99.13544945141705 && longitud <= -99.13483368418893)){
                            message+=  "Centro estudiantil";

                    //Estacionamiento
                    }else if((latitud>=19.28262212695265 && latitud <= 19.28361368386321) &&
                        (longitud>=-99.13811123859973 && longitud <= -99.13717236571667)){
                            message+=  "Estacionamiento";

                    //Biblioteca
                    }else if((latitud>=19.28306751709591 && latitud <= 19.28356569195233)&&
                        (longitud>=-99.13700689006504 && longitud <= -99.13661133231369)){
                            message+=  "Biblioteca"; 

                    //CEDETEC
                    }else if((latitud>=19.28308667597244 && latitud <= 19.28377893692422)&&
                        (longitud>=-99.13550716023458 && longitud <= -99.13483127790256)){
                            message+=  "CEDETEC";
                    }else{
                        message+=  "Te encuentras dentro del ITESM CCM, pero no estas en un edificio espec&iacute;ficamente";
                    }
                }else{
                message+=  "No te encuentras dentro del ITESM CCM";
                }
            
            
            
                message+="</h2></body></html>";

            out.println(message);
    }

    /** 
    * Returns a short description of the servlet.
    */
    public String getServletInfo() {
        return "Short description";
    }
    // </editor-fold>
}
